package com.jintian.smart.base.api.security.provider;

import com.jintian.smart.kernel.core.domain.RequestUser;
import com.jintian.smart.kernel.core.domain.ResponseDTO;

public interface ISecurityPasswordProvider {
    /**
     * 校验密码是否匹配
     */
    Boolean matchesPwd(String password, String encodedPassword);

    /**
     * 检查是否需要修改密码
     */
    boolean checkNeedChangePassword(Integer userType, Long userId);

    /**
     * 随机生成密码
     */
    String randomPassword();

    /**
     * 获取 加密后 的密码
     */
    String getEncryptPwd(String password);

    /**
     * 校验密码复杂度
     */
    ResponseDTO<String> validatePasswordComplexity(String password);

    /**
     * 校验密码重复次数
     */
    ResponseDTO<String> validatePasswordRepeatTimes(RequestUser requestUser, String newPassword);

    /**
     * 保存修改密码
     */
    void saveUserChangePasswordLog(RequestUser requestUser, String newPassword, String oldPassword);
}
